home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / test_linuxaudiodev.py < prev    next >
Text File  |  2005-10-18  |  2KB  |  93 lines

  1. from test import test_support
  2. test_support.requires('audio')
  3.  
  4. from test.test_support import verbose, findfile, TestFailed, TestSkipped
  5.  
  6. import errno
  7. import fcntl
  8. import linuxaudiodev
  9. import os
  10. import sys
  11. import select
  12. import sunaudio
  13. import time
  14. import audioop
  15.  
  16. SND_FORMAT_MULAW_8 = 1
  17.  
  18. def play_sound_file(path):
  19.     fp = open(path, 'r')
  20.     size, enc, rate, nchannels, extra = sunaudio.gethdr(fp)
  21.     data = fp.read()
  22.     fp.close()
  23.  
  24.     if enc != SND_FORMAT_MULAW_8:
  25.         print "Expect .au file with 8-bit mu-law samples"
  26.         return
  27.  
  28.     try:
  29.         a = linuxaudiodev.open('w')
  30.     except linuxaudiodev.error, msg:
  31.         if msg[0] in (errno.EACCES, errno.ENODEV, errno.EBUSY):
  32.             raise TestSkipped, msg
  33.         raise TestFailed, msg
  34.  
  35.     # convert the data to 16-bit signed
  36.     data = audioop.ulaw2lin(data, 2)
  37.  
  38.     # set the data format
  39.     if sys.byteorder == 'little':
  40.         fmt = linuxaudiodev.AFMT_S16_LE
  41.     else:
  42.         fmt = linuxaudiodev.AFMT_S16_BE
  43.  
  44.     # at least check that these methods can be invoked
  45.     a.bufsize()
  46.     a.obufcount()
  47.     a.obuffree()
  48.     a.getptr()
  49.     a.fileno()
  50.  
  51.     # set parameters based on .au file headers
  52.     a.setparameters(rate, 16, nchannels, fmt)
  53.     a.write(data)
  54.     a.flush()
  55.     a.close()
  56.  
  57. def test_errors():
  58.     a = linuxaudiodev.open("w")
  59.     size = 8
  60.     fmt = linuxaudiodev.AFMT_U8
  61.     rate = 8000
  62.     nchannels = 1
  63.     try:
  64.         a.setparameters(-1, size, nchannels, fmt)
  65.     except ValueError, msg:
  66.         print msg
  67.     try:
  68.         a.setparameters(rate, -2, nchannels, fmt)
  69.     except ValueError, msg:
  70.         print msg
  71.     try:
  72.         a.setparameters(rate, size, 3, fmt)
  73.     except ValueError, msg:
  74.         print msg
  75.     try:
  76.         a.setparameters(rate, size, nchannels, 177)
  77.     except ValueError, msg:
  78.         print msg
  79.     try:
  80.         a.setparameters(rate, size, nchannels, linuxaudiodev.AFMT_U16_LE)
  81.     except ValueError, msg:
  82.         print msg
  83.     try:
  84.         a.setparameters(rate, 16, nchannels, fmt)
  85.     except ValueError, msg:
  86.         print msg
  87.  
  88. def test():
  89.     play_sound_file(findfile('audiotest.au'))
  90.     test_errors()
  91.  
  92. test()
  93.